/**
 * Author:   e20160504
 * Date:     2018/7/9 10:22
 * Description:
 */
package com.kevin.demo.parser;

import com.kevin.demo.annotation.AbleInsertOrUpdateLog;
import com.kevin.demo.utils.ReflectionUtil;
import com.kevin.demo.utils.SpringUtil;
import tk.mybatis.mapper.common.Mapper;

/**
 * 基础解析类
 * 根据注解定义的主键及查询条件查询 默认使用方法selectByKey(xx)
 * @author kevin
 * @date 2018-07-09
 */
public class DefaultContentParse implements ContentParser {


    /**
     *@params: info entity
     *@return: 根据查询发放返回查询结果
     *@desc:  以下是查询
     */
    @Override
    public Object getResult(Object info, AbleInsertOrUpdateLog log){

        //根据字段获取字段的值
        Object result= ReflectionUtil.getFieldValue(info,log.idName());
        //方法名
        String keyMethod = log.selectByKeyMethodName();
        //获取bean
        Class cls=log.serviceclass();
        Object bean = SpringUtil.getBean(cls);
        //反射执行方法
        Object o = ReflectionUtil.invokeMethodByName(bean, keyMethod, new Object[]{result});
        return o;

    }

    ///**
    // *@params:
    // *@return:
    // *@desc:  以下是插入
    // */
    //public void insert(Object info, AbleInsertOrUpdateLog log){
    //    Class mapper = log.logMapper();
    //    Object bean = SpringUtil.getBean(mapper);
    //    ReflectionUtil.invokeMethodByName(bean, "insert", new Object[]{info});
    //}

}
